如何在python中同时运行两段中间有等待的代码?
How to run two pieces of codes with waits in between at the same time in python?
我要运行
import time
number1 = 1
while True:
number1 = int(number1) + 1
time.sleep(3)
和
import time
number2 = 1
while True:
number2 = int(number2) + 1
time.sleep(20)
在 python 的同一时间,我将如何着手这样做?
我还是个初学者,如果可以的话请简单的解释一下。
子问题:实际代码少,等待的代码多,使用多线程好还是多处理好?
子问题 2:我可以 运行 比我的 cpu 在多处理中拥有的内核数更多的进程吗?
您可以使用多处理。
from multiprocessing import Process
import time
def loop_3():
number1 = 1
while True:
number1 = int(number1) + 1
time.sleep(3)
print(number1)
def loop_20():
number2 = 1
while True:
number2 = int(number2) + 1
time.sleep(20)
print(number2)
Process(target=loop_3).start()
Process(target=loop_20).start()
我建议使用并发。为了您的目的,看起来一切都在“同时”发生(这里是对两者的更深入的解释:What is the difference between concurrency, parallelism and asynchronous methods?)。
您可以通过执行以下操作来实现并发:
def f(num, wait):
time.sleep(wait)
return int(num) + 1
numbers = [1, 2]
test = [f(num, 3) for num in numbers]
这是我用打字稿写的另一个并发示例,您可以尝试一下:ts example
注意:我会警告不要使用多线程/并行,尤其是如果您是 python 的新手。它可能会导致很多问题,难以调试/理解,如果实施不当,通常会导致性能下降而不是收益。
注意 2:如果您愿意同时创建多个实例并 运行 它们(如您在 bat 文件中所描述的那样),您可以继续进行那个,但这会使您的项目难以共享。
我要运行
import time
number1 = 1
while True:
number1 = int(number1) + 1
time.sleep(3)
和
import time
number2 = 1
while True:
number2 = int(number2) + 1
time.sleep(20)
在 python 的同一时间,我将如何着手这样做? 我还是个初学者,如果可以的话请简单的解释一下。
子问题:实际代码少,等待的代码多,使用多线程好还是多处理好?
子问题 2:我可以 运行 比我的 cpu 在多处理中拥有的内核数更多的进程吗?
您可以使用多处理。
from multiprocessing import Process
import time
def loop_3():
number1 = 1
while True:
number1 = int(number1) + 1
time.sleep(3)
print(number1)
def loop_20():
number2 = 1
while True:
number2 = int(number2) + 1
time.sleep(20)
print(number2)
Process(target=loop_3).start()
Process(target=loop_20).start()
我建议使用并发。为了您的目的,看起来一切都在“同时”发生(这里是对两者的更深入的解释:What is the difference between concurrency, parallelism and asynchronous methods?)。
您可以通过执行以下操作来实现并发:
def f(num, wait):
time.sleep(wait)
return int(num) + 1
numbers = [1, 2]
test = [f(num, 3) for num in numbers]
这是我用打字稿写的另一个并发示例,您可以尝试一下:ts example
注意:我会警告不要使用多线程/并行,尤其是如果您是 python 的新手。它可能会导致很多问题,难以调试/理解,如果实施不当,通常会导致性能下降而不是收益。
注意 2:如果您愿意同时创建多个实例并 运行 它们(如您在 bat 文件中所描述的那样),您可以继续进行那个,但这会使您的项目难以共享。