繁体   English   中英

如何在 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 中,我怎么会在 go 左右这样做呢? 我还是一个初学者,如果可以的话,请用更简单的术语解释一下。

子问题:实际代码很少,等待的时间更多,使用多线程还是多处理更好?

子问题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()

我建议使用并发。 出于您的目的,看起来一切都“同时”发生(这里对两者进行了更深入的解释: 并发、并行和异步方法有什么区别? )。

您可以通过执行以下操作来实现并发:

def f(num, wait):
  time.sleep(wait)
  return int(num) + 1
  
numbers = [1, 2]
test = [f(num, 3) for num in numbers]

这是我在 typescript 中编写的另一个并发示例,您可以使用: ts example

注意:我会警告不要使用多线程/并行,特别是如果您是 python 的新手。 它可能会导致很多问题,难以调试/理解,并且如果没有正确实施,通常会导致性能下降而不是增益。

注意 2 :如果您愿意创建多个实例并同时运行它们(如您使用 bat 文件所述),您可以提前 go 并执行此操作,但这会使您的项目难以共享。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM