第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Python Thread() 刪除換行符?

Python Thread() 刪除換行符?

我在我的程序中遇到了一個(gè)特殊的錯(cuò)誤。代碼背后的總體思路是首先創(chuàng)建一個(gè)包含 5 個(gè)列表的數(shù)組(稱為 lists_of_nums)。每個(gè)列表由 1 到 10000 范圍內(nèi)的 100 個(gè)數(shù)字組成。程序然后運(yùn)行 5 個(gè)線程。每個(gè)人都找到一個(gè)列表的平均值,并打印出完成它所花費(fèi)的時(shí)間。您會(huì)注意到在 threading_function() 中的 print() 語句的末尾有一個(gè)換行符。就在它說“seconds.\n”的地方。問題是,如果我將 't.join()' 放在一個(gè)單獨(dú)的 'for' 循環(huán)中(在我的代碼的最底部),為了同時(shí)運(yùn)行線程,換行符有時(shí)會(huì)被刪除(顯然)。如果我一個(gè)一個(gè)地單獨(dú)運(yùn)行線程,它只能在 100% 的時(shí)間內(nèi)工作。我希望有人可以幫助我了解如何同時(shí)運(yùn)行線程并且仍然讓換行符可靠。讓我用代碼示例及其不正確的輸出(僅在某些時(shí)候發(fā)生)來說明我的意思:lists_of_nums = []def create_set():    # Function for creating a list of random integers and appending them to the lists_of_nums array.    random_nums = []    for _ in range(100):        random_nums.append(randint(1, 10000))    lists_of_nums.append(random_nums)for _ in range(5):    # Five of these lists get appended to the array, by using the create_set() function.    create_set()def threading_function(list_index):    # Function responsible for finding the mean value of a given list as well as the time taken to do it.    start = timeit.default_timer()    mean_value = mean(lists_of_nums[list_index])    end = timeit.default_timer() - start    print(        "The mean value of the list number " + str(list_index + 1) + " is " + str(mean_value) +        "\nThe time taken to find it was " + str(end) + " seconds.\n" # The abovementioned newline.        )threads = []for i in range(len(lists_of_nums)):    t = Thread(target = threading_function, args = [i])    t.start()    threads.append(t)for t in threads:    # If t.join() remains in a separate 'for' loop than the Thread() class, the newline occasionally disappears.    t.join()
查看完整描述

2 回答

?
Helenr

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊

正在打印換行符。請注意,在語句 4 和 5 之間有一條額外的線。您的線程之間可能存在競爭條件。嘗試print用鎖保護(hù)函數(shù)。IE,


printLock = threading.Lock() # global variable

進(jìn)而


# inside threading_function

with printLock:

    print(

        "The mean value of the list number " + str(list_index + 1) + " is " + str(mean_value) +

        "\nThe time taken to find it was " + str(end) + " seconds.\n" # The abovementioned newline.

        )


查看完整回答
反對 回復(fù) 2023-05-23
?
慕俠2389804

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊

字符串中的換行符完好無損。print默認(rèn)情況下會(huì)在之后添加一個(gè)換行符。它在單獨(dú)的寫入中執(zhí)行此操作。來自不同線程的兩次寫入(原始字符串和換行符)可以交錯(cuò),因此有時(shí)您還會(huì)看到雙空行。如果從字符串中刪除換行符,您會(huì)看到類似的奇怪效果。

一種解決方案是在兩個(gè)換行符中結(jié)束您的字符串并停止print添加自己的字符串,即print("....\n\n", end="").


查看完整回答
反對 回復(fù) 2023-05-23
  • 2 回答
  • 0 關(guān)注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號