in-operator

___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ tag123threadsafety ___ Ein Codeteil ist Thread-sicher, wenn er Datenstrukturen nur so manipuliert, dass der Code durch mehrere Threads konsistent ausgeführt werden kann. Ein Code kann threadsicher, bedingt sicher (gegenseitiger Ausschluss erforderlich) oder unsicher (kann nur von einem Thread sicher verwendet werden). ___ qstnhdr ___ Ist pythons "in" -Sprache threadsicher für Listen? ___ tag123operator ___ expr IN (Wert, ...) -> Gibt 1 zurück, wenn Ausdruck gleich einem der Werte in der IN-Liste ist, sonst gibt 0 zurück. ___ qstntxt ___

Ist %code% Thread-sicher, während %code% in einem anderen Thread geändert werden kann?

Hier finden Sie eine umfassende, aber nicht erschöpfende Liste mit Beispielen von %code% -Operationen und ob sie Thread-sicher sind oder nicht, jedoch konnte ich keine Referenz für das %code% Sprachkonstrukt finden.

Im Hinblick auf die Python-Implementierung verwende ich CPython, aber Antworten für andere Implementierungen wären auch für die Community hilfreich.

    
___ answer19727862 ___

Ich gehe davon aus, dass Sie CPython hier verwenden.

Vorausgesetzt, es gibt kein benutzerdefiniertes %code% oder %code% hook, das zurück in Python oder fällt, verwenden die Werte, die Sie gegen in getestet haben, benutzerdefinierte %code% hooks In Python-Code implementiert, kann der %code% -Operator vollständig in C behandelt werden und ist nur ein Opcode.

Dies macht die Operation völlig Thread-sicher; Python-Threads wechseln nur zwischen Opcodes; Die GIL (Global Interpreter Lock) entsperrt normalerweise nur zwischen Opcodes.

Wenn Sie %code% für einen benutzerdefinierten C-Typ verwenden, der die GIL entsperrt, wenn das Containment getestet wird, ist das nicht threadsicher.

Mit anderen Worten: Der Bytecode-Test %code% ist gesperrt, aber wenn der Operator Python-Code aufrufen muss (durch %code% , Iterieren mit %code% , wenn keine %code% -Implementierung verfügbar ist oder die Werte test sind) gegen %code% hooks in Python implementiert), dann ist die Operation nicht Thread-sicher.

Bei anderen Python-Implementierungen kann die Verarbeitung von Threads stark variieren. Natürlich haben Jython und IronPython keine GIL, und Sie sollten davon ausgehen, dass die Operation nicht threadsicher ist.

    
___
1
Antwort

wie mit dem SQL IN Operator in der find Methode von cakephp ORM

Ich bin Anfänger in CakePHP, und ich möchte SQL% Co_de% Operator in Find-Methode verwenden, ich habe Wörter Tabelle. Mein Code ist: %Vor% , und dieser Code erstellt diese Abfrage: %Vor% aber ich brauche diese Abfrage %Vor% Wie kann i...
25.02.2012, 14:59
1
Antwort

Ist pythons "in" -Sprache threadsicher für Listen?

Ist obj in a_list Thread-sicher, während a_list in einem anderen Thread geändert werden kann? Hier finden Sie eine umfassende, aber nicht erschöpfende Liste mit Beispielen von list -Operationen und ob sie Thread-sicher sind oder ni...
01.11.2013, 13:31