Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确保某些操作员在一段时间内没有影响?(Python)_Python_Multithreading_Python 2.7_Python 3.x_Python Multithreading - Fatal编程技术网

确保某些操作员在一段时间内没有影响?(Python)

确保某些操作员在一段时间内没有影响?(Python),python,multithreading,python-2.7,python-3.x,python-multithreading,Python,Multithreading,Python 2.7,Python 3.x,Python Multithreading,我正在使用多线程。有一个线程周期性地添加到某个变量,比如说每5秒。我想这样做,在调用函数f()时,对该变量的添加不会产生任何影响 我在任何地方都找不到如何做到这一点,也不知道从哪里开始。 是否有任何语法可以使某些操作在特定的持续时间内不产生任何效果或不产生特定的变量 或者有没有人能给我一个起点,让我找出剩下的 谢谢。我建议创建addToVariable或setVariable方法来处理实际添加到相关变量的操作。通过这种方式,您可以只设置一个标志,如果该标志设置为addToVariable,则立即

我正在使用多线程。有一个线程周期性地添加到某个变量,比如说每5秒。我想这样做,在调用函数f()时,对该变量的添加不会产生任何影响

我在任何地方都找不到如何做到这一点,也不知道从哪里开始。 是否有任何语法可以使某些操作在特定的持续时间内不产生任何效果或不产生特定的变量

或者有没有人能给我一个起点,让我找出剩下的


谢谢。

我建议创建addToVariable或setVariable方法来处理实际添加到相关变量的操作。通过这种方式,您可以只设置一个标志,如果该标志设置为addToVariable,则立即返回,而不是实际添加到所讨论的变量中


如果不是,您应该研究运算符重载。基本上,您希望创建自己的数字类,并编写一个新的add函数,该函数包含某种标志,可以停止进一步的添加以产生任何效果。

我建议创建一个addToVariable或setVariable方法来处理实际添加到相关变量的操作。通过这种方式,您可以只设置一个标志,如果该标志设置为addToVariable,则立即返回,而不是实际添加到所讨论的变量中


如果不是,您应该研究运算符重载。基本上,您希望创建自己的数字类,并编写一个新的add函数,该函数包含某种标志,可以停止进一步的添加以产生任何效果。

我建议创建一个addToVariable或setVariable方法来处理实际添加到相关变量的操作。通过这种方式,您可以只设置一个标志,如果该标志设置为addToVariable,则立即返回,而不是实际添加到所讨论的变量中


如果不是,您应该研究运算符重载。基本上,您希望创建自己的数字类,并编写一个新的add函数,该函数包含某种标志,可以停止进一步的添加以产生任何效果。

我建议创建一个addToVariable或setVariable方法来处理实际添加到相关变量的操作。通过这种方式,您可以只设置一个标志,如果该标志设置为addToVariable,则立即返回,而不是实际添加到所讨论的变量中


如果不是,您应该研究运算符重载。基本上,您希望创建自己的数字类,并编写一个新的add函数,该函数包含某种标志,可以停止进一步的添加以产生任何效果。

您可以使用锁保护增量,并在
f()调用期间获取锁:

import threading
import time

lock = threading.Lock()
# ...
def f():
    with lock:
        # the rest of the function

# incrementing thread
while True:
    time.sleep(5 - timer() % 5) # increment on 5 second boundaries
    with lock:
        x += 1

执行
f()
时,递增线程被阻塞。另请参见,

您可以使用锁保护增量,并在
f()调用期间获取锁:

import threading
import time

lock = threading.Lock()
# ...
def f():
    with lock:
        # the rest of the function

# incrementing thread
while True:
    time.sleep(5 - timer() % 5) # increment on 5 second boundaries
    with lock:
        x += 1

执行
f()
时,递增线程被阻塞。另请参见,

您可以使用锁保护增量,并在
f()调用期间获取锁:

import threading
import time

lock = threading.Lock()
# ...
def f():
    with lock:
        # the rest of the function

# incrementing thread
while True:
    time.sleep(5 - timer() % 5) # increment on 5 second boundaries
    with lock:
        x += 1

执行
f()
时,递增线程被阻塞。另请参见,

您可以使用锁保护增量,并在
f()调用期间获取锁:

import threading
import time

lock = threading.Lock()
# ...
def f():
    with lock:
        # the rest of the function

# incrementing thread
while True:
    time.sleep(5 - timer() % 5) # increment on 5 second boundaries
    with lock:
        x += 1

执行
f()
时,递增线程被阻塞。另请参见,

是否可以使用另一个变量作为加法的乘法器,并且当不应进行加法时,只需将乘法器设置为0?这不是一个好主意。如果一个变量的处理很复杂,请使用特殊的方法和标志(如metareven所建议的)。但是,不要改变操作符的基本含义(尤其不是暂时的)-即使你最终成功了,它也会带来弊大于利。是的,这很有效!非常类似于Metareven。您是否可以使用另一个变量作为加法的乘法器,并且当不应进行加法时,只需将乘法器设置为0?这不是一个好主意。如果一个变量的处理很复杂,请使用特殊的方法和标志(如metareven所建议的)。但是,不要改变操作符的基本含义(尤其不是暂时的)-即使你最终成功了,它也会带来弊大于利。是的,这很有效!非常类似于Metareven。您是否可以使用另一个变量作为加法的乘法器,并且当不应进行加法时,只需将乘法器设置为0?这不是一个好主意。如果一个变量的处理很复杂,请使用特殊的方法和标志(如metareven所建议的)。但是,不要改变操作符的基本含义(尤其不是暂时的)-即使你最终成功了,它也会带来弊大于利。是的,这很有效!非常类似于Metareven。您是否可以使用另一个变量作为加法的乘法器,并且当不应进行加法时,只需将乘法器设置为0?这不是一个好主意。如果一个变量的处理很复杂,请使用特殊的方法和标志(如metareven所建议的)。但是,不要改变操作符的基本含义(尤其不是暂时的)-即使你最终成功了,它也会带来弊大于利。是的,这很有效!与Metareven非常相似。您的第一个建议应该有效,谢谢!第二个建议也应该有效,但第一个就足够了。你的第一个建议应该有效,谢谢!第二个建议也应该有效,但第一个就足够了。你的第一个建议应该有效,谢谢!第二个建议也应该有效,但第一个就足够了。你的第一个建议应该有效,谢谢!第二个建议也应该有效,但第一个建议应该足够了。