簡體   English   中英

在Python中與time.Sleep()同時運行兩個函數

[英]Running Two Functions Simultaneously With Time.Sleep() in Python

import threading
import time

array_values = []


def a(array):
    time.sleep(1)
    array.append('a')


def b(array):
    time.sleep(5)
    array.append('b')


def runInParallel(*fns):
    z = 0
    while z < 6:
        if __name__ == '__main__':
            proc = []
            for fn in fns:
                p = threading.Thread(target=fn, args=(array_values,))
                p.start()
                proc.append(p)
            for p in proc:
                p.join()
        z += 1


runInParallel(a, b)
print(array_values)

當前代碼輸出

['a', 'b', 'a', 'b', 'a', 'b', 'a', 'b', 'a', 'b', 'a', 'b']

但是,目標是使程序同時運行,以便在功能b的等待時間長為5秒的同時,功能a正在運行,並且僅休眠1秒。

期望的輸出

['a', 'a', 'a', 'a', 'b', 'a', 'a', 'a', 'a', 'b', 'a', 'a'.....so on]

我還嘗試了多處理,但是了解到它沒有使用共享內存,因此不適合使用同一列表,任何幫助都很棒! 謝謝!

import threading
import time

array_values = []


def a(array):
    time.sleep(1)
    array.append('a')


def b(array):
    time.sleep(5)
    array.append('b')


def runInParallel(*fns):
    z = 0
    while z < 6:
        if __name__ == '__main__':
            proc = []
            for fn in fns:
                p = threading.Thread(target=fn, args=(array_values,))
                p.start()
                proc.append(p)
            for p in proc:
                p.join()
        z += 1


runInParallel(a, b)
print(array_values)

當前代碼輸出

['a', 'b', 'a', 'b', 'a', 'b', 'a', 'b', 'a', 'b', 'a', 'b']

但是,目標是使程序同時運行,以便在功能b的等待時間長為5秒的同時,功能a正在運行,並且僅休眠1秒。

期望的輸出

['a', 'a', 'a', 'a', 'b', 'a', 'a', 'a', 'a', 'b', 'a', 'a'.....so on]

我還嘗試了多處理,但是了解到它沒有使用共享內存,因此不適合使用同一列表,任何幫助都很棒! 謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM