小编sga*_*a01的帖子

如何设计Codeforces交互式评分器?

我在 Codeforces 中遇到了一个交互问题。我想知道分级器或交互器(根据 Codeforces 的条款)是如何设计的。

假设我想为这个问题创建一个评分器:1. 猜数字

我对上述问题的解决方案存储在1_Guess_the_Number.py文件中。这是一个正确的解决方案,并被 CF 分级机接受。

#!/usr/bin/env python3

l, r = 1, 1000000
while l != r:
    mid = (l + r + 1) // 2
    print(mid, flush=True)
    response = input()
    if response == "<":
        r = mid - 1
    else:
        l = mid

print("!", l)
Run Code Online (Sandbox Code Playgroud)

我创建了以下grader.py文件:

#!/usr/bin/env python3

import sys

INP = 12


def interactor(n):
    if n > INP:
        return "<"
    return ">="


while True:
    guess = input()
    if …
Run Code Online (Sandbox Code Playgroud)

python

7
推荐指数
1
解决办法
330
查看次数

Python 的 ProcessPoolExecutor 以相反的顺序给出 print 和 return 语句的输出

我正在练习在 Python 中使用多处理,所以我遇到了concurrent.futuresmodule。我尝试运行以下代码:

import concurrent.futures
import time


def do_something(seconds):
    print(f'Sleeping {seconds} second(s)...')
    time.sleep(seconds)
    return f'Done Sleeping for {seconds} second(s)'

def main():

    with concurrent.futures.ProcessPoolExecutor() as executor:
        results = [executor.submit(do_something, 1.5) for _ in range(2)]

        for f in concurrent.futures.as_completed(results):
            print(f.result())


if __name__ == '__main__':
    start = time.perf_counter()
    main()
    finish = time.perf_counter()
    print(f'Finished in {round(finish-start, 2)} second(s)')
Run Code Online (Sandbox Code Playgroud)

我应该期望类似以下的输出:

Sleeping 1.5 second(s)...
Sleeping 1.5 second(s)...
Done Sleeping for 1.5 second(s)
Done Sleeping for 1.5 second(s)
Finished in 1.5 second(s)
Run Code Online (Sandbox Code Playgroud)

但是,我得到了:

Done Sleeping …
Run Code Online (Sandbox Code Playgroud)

python python-multiprocessing

5
推荐指数
1
解决办法
2665
查看次数

标签 统计

python ×2

python-multiprocessing ×1