File size: 1,695 Bytes
6b70385
009cabd
0523803
 
 
 
 
 
 
 
 
 
6b70385
 
 
0523803
009cabd
 
 
 
 
d762eb5
 
 
009cabd
 
 
 
 
d762eb5
 
009cabd
 
 
 
 
 
 
 
 
 
 
6b70385
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import subprocess
import select
import os
from mods.btn_reset import restart_space

if not os.path.exists('downloads/causallm_7b.Q5_K_M.gguf'):
    from huggingface_hub import snapshot_download
    os.mkdir("downloads")
    os.mkdir("cache")
    snapshot_download(repo_id='TheBloke/CausalLM-7B-GGUF', local_dir=r'downloads',
                      allow_patterns='causallm_7b.Q5_K_M.gguf')
    snapshot_download(repo_id='Limour/llama-python-streamingllm-cache', repo_type='dataset', local_dir=r'cache')

try:
    # 启动另一个程序,并通过管道捕获其输出
    process = subprocess.Popen(["python", "gradio_streamingllm.py"],
                               stdout=subprocess.PIPE,
                               stderr=subprocess.PIPE,
                               bufsize=1, universal_newlines=True)
    while process.poll() is None:
        # 使用 select 模块检查是否有可读数据
        ready_reads, _, _ = select.select([process.stdout, process.stderr], [], [])
        if not ready_reads:
            print('select.select timeout')
        for ready in ready_reads:
            # 读取输出并打印
            output = ready.readline()
            if output:
                print(output, end='')
            else:
                print('select.select timeout')

    # 读取剩余的输出
    for output in process.stdout.readlines() + process.stderr.readlines():
        print(output, end='')

    # 检查进程的返回代码以确定是否成功结束
    if process.returncode == 0:
        print("Process has terminated successfully.")
    else:
        print(f"Process has terminated with an error. {process.returncode}")

finally:
    restart_space()